// ServerConfiguration.h: interface for the ServerConfiguration class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SERVERCONFIGURATION_H__C269A87B_96F4_4ABC_AFF0_7DA4A40BD617__INCLUDED_)
#define AFX_SERVERCONFIGURATION_H__C269A87B_96F4_4ABC_AFF0_7DA4A40BD617__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "MonitoringUnitLib\MonitoringUnitType.h"

class ServerConfiguration
{
protected:
	ServerConfiguration();
	virtual ~ServerConfiguration();

public:
	static ServerConfiguration * Instance();
	static void DeleteInstance();

	void Init();
	void Cleanup();
	void Save();

public:
	std::string m_strRegistryEntry;
	std::string m_strWorkDir;
	int m_nPort;
	std::string m_strMACAddress;
	std::string m_strLicenseKey;
	bool m_bStoreExcessRecordToDB;
	DWORD m_dwIntervalOfStoringExcessRecord;
	bool m_bAutoReport;
	bool m_bAutoCoalMineReport;
	int m_nAutoReportTime;
	int m_nAutoReportExportFormat;
	double m_fCH4Limit;
	std::vector<int> m_vecExcessReportTypes;
	DWORD m_dwAutoReportStates;
	std::vector<int> m_vecDigitalReportTypes;
	bool m_bAutoAnalogReport;

private:
	std::string m_strAppPath;
	static ServerConfiguration * m_pInstance;
};

#endif // !defined(AFX_SERVERCONFIGURATION_H__C269A87B_96F4_4ABC_AFF0_7DA4A40BD617__INCLUDED_)
